package gui;

import gestionBDD.extractionBDD;
import gestionBDD.requetesAlbum;
import gestionBDD.requetesCommande;
import gestionBDD.requetesTirage;
import interne.Album;
import interne.Client;
import interne.Commande;
import interne.LigneCommande;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.trolltech.qt.gui.QGroupBox;
import com.trolltech.qt.gui.QHBoxLayout;
import com.trolltech.qt.gui.QListWidget;
import com.trolltech.qt.gui.QMainWindow;
import com.trolltech.qt.gui.QPushButton;
import com.trolltech.qt.gui.QTextBrowser;
import com.trolltech.qt.gui.QVBoxLayout;
import com.trolltech.qt.gui.QWidget;

public class fenetreHistorique extends QWidget {
	
	Client client ;
	Album album ;
	QListWidget commandesListWidget ;
	QTextBrowser detailsTextDocument ;
	
	public fenetreHistorique(Client c) throws SQLException {

		setClient(c) ;
		
		commandesListWidget = new QListWidget();
		commandesListWidget.currentItemChanged.connect(this, "afficherDetails()");

		detailsTextDocument = new QTextBrowser();
		
        /** Login's GroupBox' **/
        QGroupBox historiqueGroup = new QGroupBox(tr("Historique des commandes passées"));
		
		// Dialog Layout
        QHBoxLayout historiquelayout = new QHBoxLayout();
        
        historiquelayout.addWidget(commandesListWidget);
        historiquelayout.addWidget(detailsTextDocument);
        historiqueGroup.setLayout(historiquelayout);
        
        QGroupBox actionsGroup = new QGroupBox(tr("Action"));
        QVBoxLayout menuLayout = new QVBoxLayout();
   
        /* Bouton Connexion */
        QPushButton boutonRetour = new QPushButton("Retour");
        boutonRetour.clicked.connect(this, "retour()");
        
        menuLayout.addWidget(boutonRetour);
        actionsGroup.setLayout(menuLayout);
    
        QVBoxLayout layout = new QVBoxLayout();
        layout.addWidget(historiqueGroup);
        layout.addWidget(actionsGroup);
        setLayout(layout);
        
		List<Commande> listeCommandes = new ArrayList<Commande>(); 
		listeCommandes = extractionBDD.extraireCommandes(client);
		Iterator<Commande> ite = listeCommandes.iterator();
		while (ite.hasNext()) {
		    Commande commande = ite.next();
		    commandesListWidget.addItem(commande.getReference()+" / "+commande.getDate()+" = "+commande.getMontantTotal()) ;
		}
	}

	public void afficherDetails() throws SQLException {
		String reference = commandesListWidget.currentItem().text() ;
		String temp[] = reference.split(" / ");
		reference = temp[0] ;
		Commande commande = new Commande(Integer.parseInt(reference)) ;
		commande = requetesCommande.trouverAvecReference(commande) ;
	    List<LigneCommande> listeLignesCommandes = new ArrayList<LigneCommande>();
	    listeLignesCommandes = extractionBDD.extraireLignesCommandes(commande) ;
	    String facture = "";
		Iterator<LigneCommande> ite = listeLignesCommandes.iterator();
		while (ite.hasNext()) {
			LigneCommande lc = ite.next();
		    facture = facture +  "> ALBUM : " + requetesAlbum.retourneTitreAlbum(lc.getIdAlbum()) + 
		    		"\n   FORMAT : " + requetesTirage.retournerLibelle(lc.getIdFormat()) + 
		    		"\n   QTE : " + lc.getQuantite() +
		    		"\n   PRIX = " + lc.getMontant() + "\n";
		}
	    
		detailsTextDocument.setText("Reference : \t" + commande.getReference() + "\n" +
				"Produits commandés : \n" + facture +
				"\n Montant total = " + commande.getMontantTotal() +	
				"\n Destinataire : " + commande.getNomDest() + " " + commande.getPrenomDest() + "\n" +
				"Adresse d'expédition : " +commande.getAdresseDest()) ;
	}
	
	public void retour() throws SQLException {
        fenetreClient fenetre = new fenetreClient(client);
		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
		menuPrincipal.setCentralWidget(fenetre) ;
	}
	
	public Client getClient() {
		return client;
	}

	public void setClient(Client client) {
		this.client = client;
	}

}
